export default {
    /**
     * 获取日期型数据（为了兼容Safari只支持xx/xx/xx的格式）
     * @param {Object} data 待转换的日期数据
     * @return {Object} 获取到的日期
     */
    getDateByData(data) {
        return data && typeof data === 'string'
            ? new Date(data.indexOf('-') > -1 ? data.replace(/-/g, '/') : data)
            : typeof data === 'number'
            ? new Date(data)
            : data;
    },

    /**
     * 日期时间转换为文本格式
     * @param {Date|string} time 待转换的时间类型数据，必填
     * @param {string} [fmt] 转换的规则文本，默认（yyyy-MM-dd hh:mm:ss）
     * @return {string} 返回生成的时间文本
     */
    formatDateTime(time, fmt = 'yyyy-MM-dd hh:mm:ss') {
        let format = '';
        if (time) {
            time = this.getDateByData(time);
            let rule = fmt;
            let date = {
                'M+': time.getMonth() + 1,
                'd+': time.getDate(),
                'h+': time.getHours(),
                'm+': time.getMinutes(),
                's+': time.getSeconds(),
                'q+': Math.floor((time.getMonth() + 3) / 3),
                'S+': time.getMilliseconds(),
            };
            if (/(y+)/i.test(rule)) {
                format = rule.replace(
                    RegExp.$1,
                    (time.getFullYear() + '').substr(4 - RegExp.$1.length)
                );
            }
            for (let k in date) {
                if (new RegExp('(' + k + ')').test(format)) {
                    format = format.replace(
                        RegExp.$1,
                        RegExp.$1.length === 1
                            ? date[k]
                            : ('00' + date[k]).substr(('' + date[k]).length)
                    );
                }
            }
            return format;
        } else {
            return '';
        }
    },

    /**
     * 获取地址栏的参数
     *
     */
    getUrlParams(key) {
        // var reg = new RegExp(`(?<=\\b${key}=)[^&]*`)
        var res = '';
        var str = decodeURI(location.search).substring(1) || '';
        str.split('&').filter((item) => {
            var [_key, _val] = item.split('=');
            if (key === _key) res = _val;
        });
        return res;
    },

    /**
     * BASE64 格式转换为 pdf 文件路径
     */
    base642URL(base64, fileName, fileType) {
        let blob = new Blob(
            atob(base64)
                .match(new RegExp(`([\\s\\S]{1024})|([\\s\\S]{1,1024})`, 'g'))
                .map(function (item) {
                    return new Uint8Array(
                        item.split('').map(function (s, i) {
                            return item.charCodeAt(i);
                        })
                    );
                }),
            { type: `application/${fileType}` }
        );
        if (navigator.msSaveBlob) {
            return navigator.msSaveBlob(blob, `${fileName}.${fileType}`);
        }
        return window.URL.createObjectURL(blob);
    },
};
